import pandas as pd
from matplotlib import pyplot as plt

def one_row_2_many():
    df = pd.read_csv(
        "../datas/movielens-1m/movies.dat",
        header=None,
        names="MovieID::Title::Genres".split("::"),
        sep="::",
        engine="python"
    )
    # print(df)
    # 问题：怎样实现这样的统计，每个题材有多少部电影？
    # 解决思路：
    # 将Genres按照分隔符|拆分
    # 按Genres拆分成多行
    # 统计每个Genres下的电影数目
    df["Genre"] = df['Genres'].map(lambda x : x.split("|"))
    print(df.head())
    # Genre 列 是列表 类型
    # 3、使用explode将一行拆分成多行¶
    df_new = df.explode("Genre")
    # print(df_new)
    # 4、实现拆分后的题材的统计
    df_new['Genre'].value_counts().plot.bar()
    plt.show()

if __name__ == '__main__':
    one_row_2_many()

